@JsonAlias Jackson-এর একটি শক্তিশালী অ্যানোটেশন, যা একটি বা একাধিক JSON ফিল্ড নামের জন্য অ্যালিয়াস নির্ধারণ করতে ব্যবহৃত হয়। এটি বিশেষভাবে তখন কাজে আসে যখন আপনার JSON ডেটাতে বিভিন্ন নামের বিকল্প থাকতে পারে, এবং আপনি এই বিকল্প নামগুলির সাথে মানগুলি ম্যাপ করতে চান।
@JsonAlias ব্যবহার করে আপনি JSON ডেটা থেকে একটি বা একাধিক নামের সাথে ফিল্ডগুলিকে ম্যানিপুলেট করতে পারেন।
@JsonAlias এর বৈশিষ্ট্য
- Multiple Aliases: একাধিক বিকল্প নাম বা আলিয়াস ব্যবহার করতে সক্ষম।
- Graceful Deserialization: একাধিক নামের মধ্যে কোন একটি ব্যবহার করে ডেটা ডেসিরিয়ালাইজ করা সম্ভব।
- Backward Compatibility: পুরোনো এবং নতুন নামগুলির মধ্যে সঙ্গতি রাখা সম্ভব, যেমন API-এর ভিন্ন সংস্করণগুলির মধ্যে।
@JsonAlias এর ব্যবহার
উদাহরণ 1: একাধিক আলিয়াস ব্যবহার করা
ধরা যাক, আপনার একটি User ক্লাস আছে যেখানে id এবং user_id দুটি আলিয়াসের মাধ্যমে একই মান রাখা হবে।
import com.fasterxml.jackson.annotation.JsonAlias;
public class User {
@JsonAlias({"id", "user_id"})
private int userId;
private String name;
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Deserialization Example:
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonAliasExample {
public static void main(String[] args) throws Exception {
String json = "{\"id\": 1, \"name\": \"Rahim\"}"; // Using "id" as alias
ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(json, User.class);
System.out.println("User ID: " + user.getUserId());
System.out.println("User Name: " + user.getName());
}
}
JSON Output:
{
"id": 1,
"name": "Rahim"
}
Explanation:
@JsonAlias({"id", "user_id"}): এখানেidএবংuser_idদুটি আলিয়াস হিসেবে ব্যবহার করা হয়েছে, যাuserIdফিল্ডের মানে ম্যাপ হবে।- যখন JSON ফাইলটি
"id": 1অথবা"user_id": 1পাঠাবে,userIdফিল্ডে একই মান (১) আসবে।
উদাহরণ 2: একাধিক আলিয়াসের মাধ্যমে ফিল্ড কাস্টমাইজ করা
ধরা যাক, আপনি একটি Product ক্লাস তৈরি করেছেন যেখানে কিছু আলিয়াস ব্যবহার করা হয়েছে:
import com.fasterxml.jackson.annotation.JsonAlias;
public class Product {
@JsonAlias({"product_id", "id", "prod_id"})
private int productId;
private String name;
private double price;
// Getters and Setters
}
Deserialization Example:
import com.fasterxml.jackson.databind.ObjectMapper;
public class ProductExample {
public static void main(String[] args) throws Exception {
String json = "{\"product_id\": 101, \"name\": \"Laptop\", \"price\": 500.00}";
ObjectMapper mapper = new ObjectMapper();
Product product = mapper.readValue(json, Product.class);
System.out.println("Product ID: " + product.getProductId());
System.out.println("Product Name: " + product.getName());
System.out.println("Product Price: " + product.getPrice());
}
}
JSON Output:
{
"product_id": 101,
"name": "Laptop",
"price": 500.0
}
Explanation:
@JsonAlias({"product_id", "id", "prod_id"}): একাধিক আলিয়াস দিয়েproductIdফিল্ডে ডেটা ম্যাপ করা হয়েছে। JSON ফাইলেproduct_id,id, বাprod_idযে কোন নাম ব্যবহার করা যাবে।
@JsonAlias কেন ব্যবহার করবেন?
- Backward Compatibility: পুরোনো এবং নতুন নামের মধ্যে সঙ্গতি রাখা সহজ।
- Multiple JSON Naming Conventions: যখন JSON ডেটার জন্য একাধিক নাম থাকতে পারে (যেমন, API সংস্করণের কারণে), তখন
@JsonAliasব্যবহার করে একাধিক নামকে এক ফিল্ডে ম্যাপ করা সহজ। - Flexible Deserialization: JSON নামের বিভিন্ন ফরম্যাটের জন্য একটি একক Java ফিল্ড ব্যবহার করা সম্ভব হয়।
@JsonAlias এবং @JsonProperty তুলনা
| বৈশিষ্ট্য | @JsonAlias | @JsonProperty |
|---|---|---|
| ফোকাস | একাধিক আলিয়াস ব্যবহার করা | JSON ফিল্ড নাম নির্ধারণ করা |
| ব্যবহার | JSON ফিল্ডের একাধিক নামের জন্য | নির্দিষ্ট JSON ফিল্ড নাম কাস্টমাইজ করতে |
| Deserialization | একাধিক JSON নাম থেকে ডেটা নেওয়া যায় | নির্দিষ্ট নাম ব্যবহার করে ডেটা নেওয়া যায় |
@JsonAliasহল Jackson-এর একটি শক্তিশালী অ্যানোটেশন, যা একাধিক JSON ফিল্ড নামের বিকল্প (অ্যালিয়াস) সমর্থন করে।- এটি Backward Compatibility এবং Multiple Naming Conventions নিশ্চিত করার জন্য খুবই কার্যকর।
- Jackson-এর মাধ্যমে ডেটা অ্যালিয়াসে কাজ করার সময়
@JsonAliasআপনাকে আরও বেশি নমনীয়তা এবং কাস্টমাইজেশন দেয়।
Content added By
Read more